<!DOCTYPE html>
<html>
<!--
Copyright 2009 Google Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<head>
  <title>Google Earth API Samples - Fetch KML (Interactive, Checkboxes)</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  <!-- You should probably remove most of this extra cruft if you're copying
       this sample! -->
  <style type="text/css">@import "static/examples.css";</style>
  <style type="text/css">@import "static/prettify/prettify.css";</style>
  <script type="text/javascript" src="static/prettify/prettify.js"></script>
  
  <!-- Change the key below to your own Maps API key -->
  <script type="text/javascript" src="http://www.google.com/jsapi?hl=en&amp;key=ABQIAAAAwbkbZLyhsmTCWXbTcjbgbRSzHs7K5SvaUdm8ua-Xxy_-2dYwMxQMhnagaawTo7L1FE1-amhuQxIlXw"></script>
  <script type="text/javascript">
  /* <![CDATA[ */
  var ge;
  
  // store the object loaded for the given file... initially none of the objects
  // are loaded, so initialize these to null
  var currentKmlObjects = {
    'red': null,
    'yellow': null,
    'green': null
  };
  
  google.load("earth", "1");

  function init() {
    google.earth.createInstance('map3d', initCB, failureCB);
  }
  
  function initCB(instance) {
    ge = instance;
    ge.getWindow().setVisibility(true);
    
    // add a navigation control
    ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);
    
    // add some layers
    ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
    ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);

    // fly to Santa Cruz
    var la = ge.createLookAt('');
    la.set(37, -122,
      0, // altitude
      ge.ALTITUDE_RELATIVE_TO_GROUND,
      0, // heading
      0, // straight-down tilt
      5000 // range (inverse of zoom)
      );
    ge.getView().setAbstractView(la);
    
    // if the page loaded with checkboxes checked, load the appropriate
    // KML files
    if (document.getElementById('kml-red-check').checked)
      loadKml('red');
    
    if (document.getElementById('kml-yellow-check').checked)
      loadKml('yellow');
    
    if (document.getElementById('kml-green-check').checked)
      loadKml('green');
    
    document.getElementById('installed-plugin-version').innerHTML =
      ge.getPluginVersion().toString();
  }
  
  function failureCB(errorCode) {
  }
  
  function toggleKml(file) {
    // remove the old KML object if it exists
    if (currentKmlObjects[file]) {
      ge.getFeatures().removeChild(currentKmlObjects[file]);
      currentKmlObject = null;
    }
    
    // if the checkbox is checked, fetch the KML and show it on Earth
    var kmlCheckbox = document.getElementById('kml-' + file + '-check');
    if (kmlCheckbox.checked)
      loadKml(file);
  }
  
  function loadKml(file) {
    var kmlUrl = 'http://earth-api-samples.googlecode.com/svn/trunk/' +
      'examples/static/' + file + '.kml';
  
    // fetch the KML
    google.earth.fetchKml(ge, kmlUrl, function(kmlObject) {
      // NOTE: we still have access to the 'file' variable (via JS closures)
      
      if (kmlObject) {
        // show it on Earth
        currentKmlObjects[file] = kmlObject;
        ge.getFeatures().appendChild(kmlObject);
      } else {
        // bad KML
        currentKmlObjects[file] = null;
  
        // wrap alerts in API callbacks and event handlers
        // in a setTimeout to prevent deadlock in some browsers
        setTimeout(function() {
          alert('Bad or null KML.');
        }, 0);
        
        // uncheck the box
        document.getElementById('kml-' + file + '-check').checked = '';
      }
    });
  }
  
  
  /* ]]> */
  </script>
</head>
<body onload="if(window.prettyPrint)prettyPrint();init();">
  <h1>Google Earth API Samples - Fetch KML (Interactive, Checkboxes)</h1>
  <dl>
            <dt>Last Modified:</dt><dd>06/08/2009</dd>
    <dt>Installed Plugin Version:</dt><dd id="installed-plugin-version">...</dd>
  </dl>
  <div style="clear: both;"></div>
  
  <div id="ui" style="position: relative;">
    <div id="map3d" style="border: 1px solid silver; width: 500px; height: 500px;"></div>

    <div id="extra-ui" style="position: absolute; left: 520px; top: 0;">
<h2>Toggle KML Files:</h2>
<input type="checkbox" id="kml-red-check" onclick="toggleKml('red');"/>
<label for="kml-red-check">Red Placemarks</label><br/>

<input type="checkbox" id="kml-yellow-check" onclick="toggleKml('yellow');"/>
<label for="kml-yellow-check">Yellow Placemarks</label><br/>

<input type="checkbox" id="kml-green-check" onclick="toggleKml('green');"/>
<label for="kml-green-check">Green Placemarks</label><br/>
      <h2>Relevant Resources:</h2>
      <ul>
<li><a href="http://code.google.com/apis/earth/documentation/reference/google_earth_namespace.html">google.earth Namespace Reference</a></li>
<li><a href="http://code.google.com/apis/earth/documentation/reference/interface_g_e_plugin.html">GEPlugin Reference</a></li>
<li><a href="http://code.google.com/apis/earth/documentation/reference/interface_g_e_feature_container-members.html">GEFeatureContainer Members</a></li>
<li><a href="http://code.google.com/apis/kml/documentation/kmlreference.html">KML Reference</a></li>
<a id="playground-button" href="http://code.google.com/apis/ajax/playground/?exp=earth#fetch_kml_(interactive,_checkboxes)"><img src="static/playground-button.png"/></a>      </ul>
      <h2>Relevant Code Excerpt:</h2>      <pre class="prettyprint lang-js">// The source for this example is too large to show as a code excerpt.
// Please view the entire page source.</pre>    </div>
  </div>
</body>
</html>
